package com.qiangang.yan.tools.util;

import org.springframework.util.ObjectUtils;

import java.util.Random;

/**
 * @Description:
 * @Author: qiangang.yan
 * @CreateDate: 2019/8/9 10:36
 **/
public class CreateOrderNoUtil {

    //6未随机 最大生成值
    private static Integer MAX_UNIQUE_NO=999999;
    //6位随机数起始值
    private static Integer START_UNIQUE_NO=100000;

    //唯一数 生成区间倍数
    private static Integer CREATE_UNIQUE_SECTION=3;

    public static final String RENTER_ORDER="06";

    /**
     * 随机生成但不重复
     * 适用于订单号和 租客订单号
     * @param frequencyNum 生成批次 第一次是1 第二次是2... 一天最多生成7次
     * @param sum ,一次生成个数
     * @param end 后两位结尾
     * @return
     */
    public static String getCreateNO(Integer frequencyNum,Integer sum,String end) {
        if(ObjectUtils.isEmpty(frequencyNum) || ObjectUtils.isEmpty(sum)) {
            return "";
        }
        Random random = new Random();
        String prifx = DateUtil.getYYMMddNext();
        StringBuilder sb = new StringBuilder(prifx);
        //随机不重复生成//且最后一位不能是0
        random.ints(START_UNIQUE_NO*frequencyNum, (frequencyNum+CREATE_UNIQUE_SECTION)*START_UNIQUE_NO).distinct()
                .filter(o ->(o%10!=0))
                .limit(sum).forEach(o ->{
            if(MAX_UNIQUE_NO.compareTo(o)>0) {
                sb.append(String.valueOf(o));
                sb.reverse();
                sb.append(end);
            }
        });
        return sb.toString();
    }




    public static void main(String[] args) {
        String str = getCreateNO(1,10000,"");

    }

}
